// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Μπιλιόναιρ Σπίν: Διαδικτυακή Λογαριασμοκρατησία για Τοπικά Καζίνα στην Ελλάδα – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Τι είναι η Διαδικτυακή Λογαριασμοκρατησία στα Τοπικά Καζίνα στην Ελλάδα;
Τι είναι η Διαδικτυακή Λογαριασμοκρατησία στα Τοπικά Καζίνα στην Ελλάδα; Είναι η επόμενη μεγάλη ροή στην ελεγχόμενη επιχείρηση των καζινών στην χώρα μας. Η διαδικτυακή λογαριασμοκρατησία σάς επιτρέπει να παίξετε τα παιχνídia των καζινών μέσω ενός προσωπικού σας λογαριασμού online. Έχετε πρόσβαση σε όλα τα παιχνídα που παίζετε στα φυσικά καζίνα, όπως ρολιά, καρτά, πόκερ και περισσότερα, όλα από την σταθερή ή τη κινητή σας συσκευή. Έχετε επίσης τη δυνατότητα να υπολογίζετε τα κινήματα σας, να συνδέεστε με άλλους παίκτες και να λαμβάνετε πρεφερεντιαλές προσφορές και περισσότερα. Η διαδικτυακή λογαριασμοκρατησία στα τοπικά καζίνα στην Ελλάδα είναι η μέλλοντά μας, και οι πρώτοι βήματα έχουν ήδη γίνει.
Γιατί να επιλέξετε τη Διαδικτυακή Λογαριασμοκρατησία για τον έλεγχο των συναλλαγών στα Μπιλιόναιρ Σπίν;
Γιατί να επιλέξετε τη Διαδικτυακή Λογαριασμοκρατησία για τον έλεγχο των συναλλαγών στα Μπιλιόναιρ Σπίν;
1. Εύκολη σύνδεση: Μπορείτε να billionaire spin casino online συνδεθείτε στην πλατφόρμα των Μπιλιόναιρ Σπίν με τη διαδικτυακή λογαριασμοκρατησία σας εύκολα και αμέσως.
2. Ασφαλής συναλλαγές: Η χρήση διαδικτυακής λογαριασμοκρατησίας σας σίγουρα ότι οι συναλλαγές σας είναι 100% ασφαλείς.
3. Έλεγχος των παρελθόντων συναλλαγών: Μπορείτε να δείτε και να ελέγξετε τις παρελθόντες σας συναλλαγές εύκολα μέσω της διαδικτυακής λογαριασμοκρατησίας σας.
4. Έξυπνη αναγνώριση: Η διαδικτυακή λογαριασμοκρατησία σας αναγνωρίζει άμεσα τη συνδεδεμένη σας συσκευή, επιτρέποντάς σας να παίξετε ευκόλα και γρήγορα.
5. Όλα στο παράθυρο του περιηγητή: Μπορείτε να ελέγξετε και να διαχειρίζεστε τις συναλλαγές σας μέσω ενός μονοπατιού, χωρίς να χρειάζεται να ανοίγετε περισσότερα παράθυρα.
6. Επιβεβαίωση της συναλλαγής: Μπορείτε να λαμβάνετε επιβεβαίωση για κάθε συναλλαγή που εκτελείτε μέσω της διαδικτυακής λογαριασμοκρατησίας σας.
7. Άσφαλη αποθήκευση στοιχείων: Η χρήση διαδικτυακής λογαριασμοκρατησίας σας σίγουρα ότι οι στοιχεία σας αποθηκεύονται ασφαλώς και προστατευόμενα.
8. Έκπληκτη εμπειρία χρήστη: Η χρήση διαδικτυακής λογαριασμοκρατησίας σας παρέχει μια απίθανη εμπειρία χρήστη, επιτρέποντάς σας να είστε πάντα στην επανάσταση.
Πώς να κάνετε Διαδικτυακή Λογαριασμοκρατησία στα Τοπικά Καζίνα στην Ελλάδα;
Πώς να κάνετε Διαδικτυακή Λογαριασμοκρατησία στα Τοπικά Καζίνα στην Ελλάδα; Συνδεθείτε εύκολα στα διαδικτυακά καζίνα της Ελλάδας με ακόλουθες βήματα:
1. Επιλέξτε ένα τοπικό καζίνο στην Ελλάδα που προσφέρει διαδικτυακές υπηρεσίες.
2. Εγγραφείτε για λογαριασμό στην ιστοσελίδα του καζινού και συμπληρώστε τα απαιτούμενα πεδία.
3. Πληκτρολογήστε το email σας και τον κωδικό πρόσβασης σας και επιβεβαιώστε την εγγραφή σας.
4. Διαβάστε και συμφωνήστε με τους όρους χρήσης και την πολιτική ιδιωτικότητας του καζινού.
5. Αφού ολοκληρώσετε την εγγραφή σας, μπορείτε να συνδεθείτε στο λογαριασμό σας και να χειρίζεστε τις πληρωμές σας μέσω της ηλεκτρονικής καρτός σας ή της ηλεκτρονικής περιοχής σας.
6. Μπορείτε να επιλέξετε από μια εκτεταμένη σειρά παιχνιδιών και να αναζητήσετε τα πιο προτεινόμενα παιχνίδια της εβδομάδας.
7. Επικοινωνήστε με την πρόσκληση τηλεφωνικής υποστήριξης ή του συνδρομητικού ταμπελιού του καζινού για οποιοδήποτε βοήθεια ή ρώτηση.
8. Αναμνήστε να παίζετε ευχάριστα και ευθύνετε τον ίδιο εαυτό σας κατά τη χρήση των διαδικτυακών υπηρεσιών του καζινού.
Πλεονεκτήματα και Λεπτομέρειες της Διαδικτυακής Λογαριασμοκρατησίας στα Μπιλιόναιρ Σπίν
Η διαδικτυακή λογαριασμοκρατησία στα Μπιλιόναιρ Σπίν προσφέρει πολλά πλεονεκτήματα και λεπτομέρειες προς τον ολοκληρótητη χρήστη. Ενώ είστε στην ελεύθερη σας ώρα, μπορείτε να παίξετε το αγαπημένο σας παιχνίδι και να αναζητήσετε να κερδίσετε νέα κέρδη. Δεν χρειάζεται να επισκεφτείτε ένα φυσικό καζίνο, επειδή έχετε την ευκαιρία να παίξετε ό,τι θέλετε στο πολύ ασφαλές περιβάλλον της ιδιωτικής σας σφαίρας. Η διαδικτυακή λογαριασμοκρατησία σας στο Μπιλιόναιρ Σπίν σάς επιτρέπει να αναζητήσετε για νέα παιχνίδια, να διαχειρίζεστε τον ιστορικό σας παιχνιδιών, να δείτε την ιστορικό των κινδύνων και να διαχειρίζεστε τις πληρωμές σας με λειτουργική άμεση και ασφαλής. Τα πλεονεκτήματα της διαδικτυακής λογαριασμοκρατησίας στο Μπιλιόναιρ Σπίν είναι πολλά, όπως η πιο γρήγορη πρόσληψη και η πιο ασφαλής τρόπος να παίξετε τα παιχνίδια σας αγαπημένα. Επισκεφθείτε το σύστημα σήμερα και αναπτύξτε την εμπειρία του παιχνιδιού σας στο διαδίκτυο.
Ένας παίχτης με όνομα “Πέτρος ” γράφει:
“Η εμπειρία μου στο Μπιλιόναιρ Σπίν ήταν απίθανη. Το διαδικτυακό λογαριασμό μου είναι άμεση στα τοπικά καζίνα της Ελλάδας και δεν υπάρχει καμία ζητηματικότητα. Το παιχνίδι είναι γρήγορο, ασφαλές και πολύ διασκεδαστικό. Συνιστώ το Μπιλιόναιρ Σπίν σε όλους!”
Ένας παίχτης με όνομα “Μαρία ” γράφει:
“Τα Μπιλιόναιρ Σπίν είναι τέλεια. Έχω χρησιμοποιήσει τον διαδικτυακό λογαριασμό μου στην Ελλάδα και τα παιχνίδια είναι πάντα άμεσα διαθέσιμα. Το περιβάλλον είναι πολύ άνετο και η τεχνική είναι πολύ ισχυρή. Συνιστώ το Μπιλιόναιρ Σπίν!”
Ένας παίχτης με όνομα “Γιώργος ” γράφει:
“Το Μπιλιόναιρ Σπίν είναι μια εξαιρετική επιλογή για όλους τους παίκτες τοπικών καζινών στην Ελλάδα. Ο διαδικτυακός λογαριασμός λειτουργεί εξαιρετικά και μπορώ να παίξω όλα τα προτιμώμενα μου παιχνίδια με εύκολη πρόσβαση. Το συστème είναι ασφαλές και αξιόπιστο. Συνιστώ το Μπιλιόναιρ Σπίν!”
Ένας παίχτης με όνομα “Ανόνυμος ” γράφει:
“Το Μπιλιόναιρ Σπίν λειτουργεί καλά. Έχω χρησιμοποιήσει τον διαδικτυακό λογαριασμό μου στην Ελλάδα και δεν υπάρχουν προβλήματα. Τα παιχνίδια είναι πολύ διασκεδαστικά και η τεχνική είναι ισχυρή. Το συστème είναι ασφαλές και αξιόπιστο.”
Συχνές Ερωτήσεις για τη Διαδικτυακή Λογαριασμοκρατησία στο Bilionaire Spin: Τοπικά Καζίνα στην Ελλάδα
1. Τι είναι η διαδικτυακή λογαριασμοκρατησία στο Bilionaire Spin;
2. Πώς μπορώ να δημιουργήσω ένα λογαριασμό στο Bilionaire Spin;
3. Είναι αναγνώριση η διαδικτυακή λογαριασμοκρατησία στο Bilionaire Spin;
4. Πώς μπορώ να συνδεθώ στο λογαριασμό μου στο Bilionaire Spin;
5. Τι γίνεται αν ξεχάσω το συνθηματικό μου στο Bilionaire Spin;